# _*_ coding : utf-8 _*_
# @Time: 2024/10/16 16:16
# @Author : 石文帅
# @File : testcase07_1分类资源
# @Project : python_slfh

from server.slfhWorkbench import *
from selenium.webdriver.chrome.service import Service
from xpathDictionary.slfhXpath import *
from datetime import date


class test(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        cls.wd = webdriver.Chrome(service=Service(driver_path))
        cls.wd.get(url_path)
        cls.wd.maximize_window()
        login(cls.wd)

    @classmethod
    def tearDownClass(cls):
        element_exist_click(cls.wd, resources['新增编辑-资源地图取消'], 1)
        element_exist_click(cls.wd, resources['新增编辑-提交取消'], 1)

        log.info('清空输入框')
        locate_clear(cls.wd, resources['分类资源-资源名称输入框'])
        log.info('开始测试删除下级前删除')
        locate_click(cls.wd, f"{resources['关键字搜索的children列']}/div[2]/div/div[1]/span[2]/span[2]")
        locate_click(cls.wd, resources['分类资源-类别删除操作'])
        locate_click(cls.wd, resources['分类资源-类别删除确认'])
        assert_str_element(cls.wd, '所选分类下存在资源数据，不支持删除', resources['分类资源-类别删除报错提示'])

        resource_del(cls.wd, resource_type='重要资源')
        log.info('开始测试删除下级后删除')
        locate_click(cls.wd, f"{resources['关键字搜索的children列']}/div[2]/div/div[1]/span[2]/span[2]")
        locate_click(cls.wd, resources['分类资源-类别删除操作'])
        locate_click(cls.wd, resources['分类资源-类别删除确认'])

        log.info('断言删除成功')
        keyword_search(cls.wd, '重要资源')
        assert_str_element(cls.wd, '暂无数据', resources['资源列表暂无数据'])
        cls.wd.quit()
        log.info('----------------------------------------------------------')

    def testcase07_1分类资源(self):
        """
        分类资源
        :return:
        """
        log.info('testcase07_1分类资源')
        search_menu(self.wd, '分类资源')
        log.info('搜索 其他资源要素')
        keyword_search(self.wd, '其他资源要素')
        log.info('断言搜索是否正确')
        assert_str_element(self.wd, '其他资源要素', f"{resources['关键字搜索的children列']}/div[1]/span[2]/span[1]/span")

        log.info('新增其他资源要素的 下级资源类型:  测试下级类别')
        log.info('点击3个点')
        locate_click(self.wd, f"{resources['关键字搜索的children列']}/div[1]/span[2]/span[2]")
        log.info('展开添加下级')
        # last是添加下级，第一个是添加同级
        locates_last_click(self.wd, resources['分类资源-类别添加操作'])
        locate_input(self.wd, resources['分类资源-类别操作-名称'], '测试下级类别')
        locate_sendImg(self.wd, f"{path_expected_img}/资源图标.png", resources['分类资源-类别操作-图片'])
        locate_click(self.wd, resources['分类资源-类别操作-点位'])
        locate_click(self.wd, resources['分类资源-类别操作-确认'])
        log.info('断言是否添加成功-图标-名字')
        keyword_search(self.wd, '测试下级类别')
        assert_download_src_img_locate(self.wd, '资源图标.png', f"{resources['关键字搜索的children列']}/div[2]/div/div/span[2]/span[1]/img")
        assert_str_element(self.wd, '测试下级类别', f"{resources['关键字搜索的children列']}/div[2]/div/div/span[2]/span[1]/span")
        log.info('编辑名字,测试下级类别 改为 重要资源')
        locate_click(self.wd, f"{resources['关键字搜索的children列']}/div[2]/div/div[1]/span[2]/span[2]")
        locate_click(self.wd, resources['分类资源-类别编辑操作'])
        locate_input(self.wd, resources['分类资源-类别编辑-名称'], '重要资源')
        locate_click(self.wd, resources['分类资源-类别编辑-确认'])
        log.info('搜索重要资源,断言后点击')
        keyword_search(self.wd, '重要资源')
        assert_str_element(self.wd, '重要资源', f"{resources['关键字搜索的children列']}/div[2]/div/div/span[2]/span[1]/span")
        locate_click(self.wd, f"{resources['关键字搜索的children列']}/div[2]/div/div/span[2]/span[1]/span")

        log.info('开始新增资源')
        locate_click(self.wd, resources['分类资源-新增按钮'])
        add_edit_resource(self.wd, '测试资源名称1', '重要资源', '小帅', '13635491601', '资源描述1', False, img_name='新增重要资源图片1.png', lon='106.458717', lat='29.559801')

        locate_click(self.wd, resources['分类资源-新增按钮'])
        add_edit_resource(self.wd, '测试资源名称2', '重要资源', '大帅', '13635491602', '资源描述2', True, img_name='新增重要资源图片2.png', lon='106.496025', lat='29.618059')

        log.info('搜索-测试资源名称1')
        log.info('列表第一行断言-测试资源名称1')
        locate_input(self.wd, resources['分类资源-资源名称输入框'], '测试资源名称1')
        locate_click(self.wd, resources['分类资源-模拟搜索按钮'])
        time.sleep(1)
        # 获取当前日期
        current_date = date.today().strftime('%Y-%m-%d')
        expect_list = ['1', '测试资源名称1', '重要资源', '小帅', '13635491601', '106.458717\n29.559801', '资源描述1', current_date, '不可用', '审核通过']
        resource_search_assert(self.wd, expect_list)

        log.info('点击编辑-测试资源名称1')
        locate_click(self.wd, resources['资源列表第一行编辑'])
        log.info('断言编辑中回填是否正确')
        expect_list = ['测试资源名称1', '小帅', '13635491601', '重要资源', '资源描述1', '不可用', '106.458717', '29.559801', '新增重要资源图片1.png']
        resource_edit_assert(self.wd, expect_list)

        log.info('开始编辑数据')
        add_edit_resource(self.wd, '测试资源名称3', '重要资源', '小帅3', '13635491603', '资源描述3', True, img_name='新增重要资源图片2.png', address='金开大道西段102号')

        log.info('断言编辑后列表数据')
        log.info('搜索-测试资源名称3')
        log.info('列表第一行断言-测试资源名称3')
        locate_input(self.wd, resources['分类资源-资源名称输入框'], '测试资源名称3')
        locate_click(self.wd, resources['分类资源-模拟搜索按钮'])
        time.sleep(1)
        expect_list = ['1', '测试资源名称3', '重要资源', '小帅3', '13635491603', '106.494972\n29.623892', '资源描述3', current_date, '可用', '审核通过']
        resource_search_assert(self.wd, expect_list)

        log.info('点击编辑-测试资源名称3')
        locate_click(self.wd, resources['资源列表第一行编辑'])
        log.info('断言编辑中回填是否正确')
        expect_list = ['测试资源名称3', '小帅3', '13635491603', '重要资源', '资源描述3', '可用', '106.494972', '29.623892', '新增重要资源图片2.png']
        resource_edit_assert(self.wd, expect_list)
        locate_click(self.wd, resources['新增编辑-提交取消'])







